package com.winhxd.b2c.product.dao;

import com.winhxd.b2c.common.domain.product.model.ProductAttributeOption;
import com.winhxd.b2c.common.domain.product.vo.ProductAttributeOptionVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author luosixiang
 */
public interface ProductAttributeOptionMapper {

    /**
       *  描述
       * @author luosixiang
       * @date 11:55 2019/1/18
       * @param id
       * @return int
       **/

    int deleteByPrimaryKey(Long id);

    /**
       *  描述
       * @author luosixiang
       * @date 11:56 2019/1/18
       * @param record
       * @return int
       **/

    int insert(ProductAttributeOption record);

    /**
       *  描述
       * @author luosixiang
       * @date 11:56 2019/1/18
       * @param record
       * @return int
       **/

    int insertSelective(ProductAttributeOption record);

    /**
       *  描述
       * @author luosixiang
       * @date 11:55 2019/1/18
       * @param id
       * @return com.winhxd.b2c.common.domain.product.model.ProductAttributeOption
       **/

    ProductAttributeOption selectByPrimaryKey(Long id);

    /**
       *  描述
       * @author luosixiang
       * @date 11:56 2019/1/18
       * @param record
       * @return int
       **/

    int updateByPrimaryKeySelective(ProductAttributeOption record);

    /**
       *  描述
       * @author luosixiang
       * @date 11:56 2019/1/18
       * @param record
       * @return int
       **/

    int updateByPrimaryKey(ProductAttributeOption record);

    /**
     *根据属性id查询属性值
     * @param attributeId
     * @return ProductAttributeOption
     */
    List<ProductAttributeOption> selectAttributeOptionByAttributeId(Long attributeId);

    /**
     * 根据id修改商品属性值 名称
     * @param id
     * @param optionValue
     * @return int
     */
    int updateOptionById(@Param("id") Long id,@Param("optionValue") String optionValue);

    /**
     * 该属性下最大排序
     * @param attributeId
     * @return
     */
    int selectMaxSortNoByAttributeId(Long attributeId);

    /**
     * 商品的各个颜色的库存
     * @param spuId
     * @return
     */
    List<ProductAttributeOptionVO> selectColorStockBySpuId(Long spuId);

    /**
     * 商品的各个尺码的库存
     * @param spuId
     * @return
     */
    List<ProductAttributeOptionVO> selectSizeStockBySpuId(Long spuId);
}